package cn.aixuxi.notebank.service;

import cn.aixuxi.notebank.dto.UserDTO;
import cn.aixuxi.notebank.dto.UserInputDTO;
import cn.aixuxi.notebank.entity.UserEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Set;

public interface UserService extends IService<UserEntity> {
    /**
     * 功能描述: 用户登录
     *
     * @param userInputDTO 用户登录信息
     * @return : 用户信息
     * @author : ruozhuliufeng
     * @date : 2020/10/24 21:19
     */
    UserEntity login(UserInputDTO userInputDTO);

    /**
     * 功能描述: 根据用户名查找用户信息
     *
     * @param username 用户名
     * @return : 用户信息
     * @author : ruozhuliufeng
     * @date : 2020/11/15 23:16
     */
    UserEntity findByUsername(String username);

    /**
     * 功能描述: 根据用户名查找用户角色信息
     *
     * @param username 用户名
     * @return : 角色信息
     * @author : ruozhuliufeng
     * @date : 2020/12/9 11:26
     */
    Set<String> getUserRolesSetByUsername(String username);

    /**
     * 功能描述: 根据用户名查找用户权限信息
     *
     * @param username 用户名
     * @return : 权限信息
     * @author : ruozhuliufeng
     * @date : 2020/12/9 11:27
     */
    Set<String> getUserPermissionsSetByUsername(String username);

    /**
     * 功能描述: 根据激活码获取用户信息
     *
     * @param activeCode 激活码
     * @return : 用户信息
     * @author : ruozhuliufeng
     * @date : 2020/12/29 13:59
     */
    UserEntity findByActiveCode(String activeCode);
}
